package com.sxj.corejava.code09_集合.Set集合;

/**
 * @author 石小俊
 * @date 2024年05月07日 18:19
 */
public class User implements Comparable<User>{
    private String username;
    private int age;

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", age=" + age +
                '}';
    }

    public User(String username, int age) {
        this.username = username;
        this.age = age;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    /**
     * 比较规则:根据方法返回值的大小判定是升序还是降序
     * 升序
     *  1.如果该对象大于方法参数对象,则返回值大于0
     *  2.如果该对象等于方法参数对象,则返回值等于0
     *  3.如果该对象小于方法参数对象,则返回值小于0
     * 降序
     *  1.如果该对象大于方法参数对象,则返回值小于0
     *  2.如果该对象等于方法参数对象,则返回值等于0
     *  1.如果该对象小于方法参数对象,则返回值大于0
     * @param user
     * @return 返回值用于判定升序与降序,一般选用0、1、-1表示等于0、大于0、小于0
     */
    @Override
    public int compareTo(User user) {
        if(this.age > user.getAge()){
            return 1;
        } else if (this.age < user.getAge()){
            return -1;
        } else{
            // 降序
            if(this.username.length() > user.getUsername().length()){
                return -1;
            } else if(this.username.length() < user.getUsername().length()){
                return 1;
            } else{
                return 0;
            }
        }
    }
}
